package com.sskj.api.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sskj.api.domain.SysUser;
import com.sskj.api.domain.Role;
import com.sskj.api.domain.UserRole;

import java.util.List;

public interface IUserRoleService extends IService<UserRole> {

    /**
     * 关联的指定角色总数
     * @param roleId 角色ID
     * @return 总数
     */
    Long countByRoleId(Long roleId);

    /**
     * 绑定角色
     * @param userId 用户ID
     * @param roleIds 角色列表
     */
    void bindRoles(Long userId, List<Long> roleIds);

    /**
     * 绑定用户
     * @param roleId 角色ID
     * @param userIds 用户集合
     */
    void bindUserIds(Long roleId, List<Long> userIds);

    /**
     * 角色绑定了用户分页列表
     * @param roleId 角色ID
     * @param pageNum 页码
     * @param pageSize 条数
     * @return 集合
     */
    IPage<SysUser> pageListByRoleId(Long roleId, Long pageNum, Long pageSize);

    /**
     * 用户绑定的角色集合
     * @param userId 用户ID
     * @return 集合
     */
    List<Role> listByUserId(Long userId);

    /**
     * 接触角色绑定
     * @param id 主键ID
     */
    void unBind(Long id);

    /**
     * 是否是超级管理员
     * @param userId 用户ID
     * @return 是否是超级管理员
     */
    Boolean isAdmin(Long userId);
}
